Computers and work stations have become very popular and people have become very adept at using computers for performing a plurality of tasks simultaneously. The processing power and processing speed of personal computers, as well as the software for operating personal computers, has improved dramatically, such that personal computers are now capable of efficiently performing multi-tasking. In order to manage and view a variety of activities executing on the computer simultaneously, operating systems provide a graphical user interface which can display multiple windows of information simultaneously, with each window representing a different process or operation. These display windows may overlap each other, reside side by side, or be moved in any desired manner by the user, so that the user can view, manage and/or interact with each activity being performed by the computer.
Providing multiple windows of information on a video monitor requires a great amount of the host computer or central processing unit's (CPU) resources. Accordingly, special hardware has been designed to off-load the processing of video information from the CPU. Typically, such special hardware or video controllers, receive and process a single type of video information at a time, place the information into a video frame buffer, and then convert the digital information stored in the frame buffer to information (i.e. analog RGB data) which is displayed on the monitor.
FIG. 1A is a schematic functional block diagram of a typical prior art system 10 in which visual data 12 and control information 14 in the form of digital data are received from the host computer (not shown). The control information 14 specifies how the visual data 12 is to be interpreted. The visual data 12 is stored in a frame buffer 16. The visual data 12 could be in different formats, for instance, linear gray scale, RGB, YUV, or palletized color data. Each of these different formats must be translated to a common display format (i.e. RGB) prior to being painted or displayed on a video monitor or display screen 18. The frame buffer 16 is a dynamic memory which stores all of the converted data to be displayed on the screen 18. That is, the frame buffer 16 stores pixel data, which defines how each pixel on the screen 18 will be activated. In this prior art system 10, only one data type can be displayed on the screen 18 at any one time. Thus, even if multiple windows are being displayed on the screen 18, each window is of the same data type. For instance, pixel data is commonly displayed in RGB, YUV, VGA, or linear gray scale mode, and the prior art permits painting windows of data on a screen in only one of these modes at a time. In addition, all of the visual data 12 is stored in sequential memory locations in a contiguous memory space in either the video controller and/or the host processor. Further, the frame buffer addressing logic (which controls the frame buffer pointer) is rudimentary, in that the pointer is simply incremented from one frame buffer address to the next, until it reaches the end of the buffer 16, at which time the pointer is reset to point to the beginning of the frame buffer 16.
With the advances in computer and software technology, there was a need for being able to quickly and efficiently display more than one type of data on the display screen 18. For instance, it was desired to display a digital graphics image in a first window and a live video image in a second window, simultaneously, on the screen 18.
FIG. 1B is a functional schematic block diagram of another prior art system 20 in which a digital graphics image A is displayed in a first window on the screen 18 and a digital video image B is displayed in a second window on the screen 18. According to this system 20, digital graphics information is stored in a first portion 22 of a display memory 24 and digital video data is stored in a second portion 26 of the display memory 24. Due to the fact that the digital graphics information and the digital video information are formatted differently, control logic 28 is provided to convert the two different data types to a common format before storing the information in the frame buffer 16. In addition, a separate, additional buffer 30 is provided for reading the digital video information out of the memory 24 in order to synchronize the graphics information and the video information because these two information types are read out of the memory 24 at different frequency rates.
Although the prior art system 20 allows for displaying a video window B and a graphics window A simultaneously on the screen 18, the system 20 still only processes and displays data which is provided from sequential memory locations of the display memory 24. That is, there is a one-to-one correspondence between the data displayed on the screen 18, the data in the video RAM or frame buffer 16 and the data in the display memory 24. Accordingly, like the system 10, the system 20 takes a hardware approach to addressing the pixel data in the frame buffer 16. Further, the system 20 is limited in the number of windows that can simultaneously be displayed and the number of data types which can be simultaneously displayed on the screen 16. Accordingly, there exists a need to be able to simultaneously display a plurality of windows of different data types or display formats, as well as the ability to perform window clipping and foreground to background switching on the screen 18. There also is a need to be able to manage and store, in both real-time and nonreal-time, the data representing the different windows more efficiently. There further is a need to be able to quickly move and rearrange windows displayed on the screen 18.
The present invention enables multiple windows of different types or formats to be simultaneously displayed on a monitor or display screen, such as a computer monitor. Further, the multiple windows may overlap each other in any desired manner and be quickly rearranged and repainted on the screen. In addition, the present invention allows more than one stream of pixel data to be fetched at a time, from anywhere in memory, as opposed to the prior art, which allowed fetching only one pixel stream from a single, linear block of memory.
The present invention provides a soft approach to storing, managing, and accessing pixel data stored in the video memory or frame buffer. A layer of addressing logic is provided which allows pixel information to be stored randomly, in nonsequential locations of the frame buffer. According to the invention a linked list, termed a "display list," is used to point to the location of the information displayed on the monitor or screen. For instance, a first window is stored in a first block of memory, a second window in a second block of memory, etc. Each window may be of any size and shape, and accordingly, each block of memory required to store the window data may vary. Further, the window data need not comprise a single contiguous block of memory, but may be broken up into smaller blocks of memory randomly located throughout the display memory. In contrast, the prior art methods of storing display data requires constantly piecing the display frame together into sequential memory locations by performing multiple destructive writes to the frame buffer. The display list architecture of the present invention is thus a transformation from the "data" domain of the prior art to an "addressing" domain. Although the display list architecture adds a level of logic, i.e. addressing logic, to the control of video data, the benefits afforded by the display list architecture are valuable. For instance, reconstruction of the frame buffer by way of multiple destructive writes in order to compensate for switching a window from background to foreground is no longer necessary. Rather, only the display list, and not the pixel data, needs to be updated. Therefore, no destructive writes are required to display a plurality of windows where the windows are switching from foreground to background. Accordingly, window switching can be performed in real-time, in a fraction of the time it takes the prior art to perform window switching.
In addition to pointing to the information to be displayed on the screen, the display list includes an attribute definition field which defines the type of display information being pointed to by the display list. That is, the display list may point to a first block of data which defines a window of graphics data, a second block of data which defines a window of video data, and a third block of data which defines a window of VGA data. The present invention allows for each of these windows of different types of data to be displayed simultaneously at any desired position on the screen. Further, new windows may be quickly and efficiently displayed merely by changing a display list entry to point to a different block of data, where data for the new window is stored, as opposed to having to read the whole block of data into a video memory, and possibly have to also rearrange all of the data presently in the video memory. As will be apparent, the present invention provides many advantages over prior art methods of storing and processing display information.